// 创建样式元素
let themeStyleElement = null;

// 初始化主题
chrome.storage.sync.get('theme', function(data) {
  // 如果没有保存的主题或者是正常模式，不做任何处理
  // 这样可以确保网页初始加载时保持原样
  if (!data.theme || data.theme === 'normal') {
    console.log("使用默认主题");
    return;
  }
  
  // 只有在明确设置了非正常主题时才应用
  applyTheme(data.theme);
});

// 监听来自弹出窗口的消息
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.action === "changeTheme") {
    applyTheme(request.theme);
    // 发送响应确认主题已更改
    sendResponse({success: true, theme: request.theme});
    return true; // 表示异步响应
  } else if (request.action === "resetTheme") {
    // 完全重置主题
    forceResetTheme();
    sendResponse({success: true});
    return true;
  }
});

// 强制重置主题 - 通过页面刷新
function forceResetTheme() {
  console.log("正在强制重置主题...");
  
  // 清除存储中的主题设置
  chrome.storage.sync.remove('theme', function() {
    console.log('主题设置已从存储中删除');
  });
  
  // 移除所有可能存在的主题类
  document.documentElement.classList.remove('theme-dark');
  document.documentElement.classList.remove('theme-eye-protect');
  document.documentElement.classList.remove('theme-normal');
  
  // 移除所有可能存在的主题样式元素
  const allStyles = document.querySelectorAll('style');
  allStyles.forEach(style => {
    if (style.id && style.id.includes('theme')) {
      style.remove();
    }
  });
  
  // 如果已存在主样式元素，则移除它
  if (themeStyleElement) {
    themeStyleElement.remove();
    themeStyleElement = null;
  }
  
  // 创建并应用强制重置样式
  const resetStyle = document.createElement('style');
  resetStyle.textContent = `
    html, body {
      filter: none !important;
      -webkit-filter: none !important;
      background-color: white !important;
      color: black !important;
    }
    
    * {
      filter: none !important;
      -webkit-filter: none !important;
    }
  `;
  
  // 添加重置样式
  document.head.appendChild(resetStyle);
  
  console.log("主题已强制重置");
}

// 应用主题函数
function applyTheme(theme) {
  console.log("正在应用主题:", theme);
  
  // 保存当前主题到本地存储
  chrome.storage.sync.set({theme: theme}, function() {
    console.log("主题已保存:", theme);
  });
  
  // 移除可能存在的主题类
  document.documentElement.classList.remove('theme-dark');
  document.documentElement.classList.remove('theme-eye-protect');
  document.documentElement.classList.remove('theme-normal');
  
  // 移除所有可能存在的主题样式元素
  const allStyles = document.querySelectorAll('style');
  allStyles.forEach(style => {
    if (style.id && style.id.includes('theme')) {
      style.remove();
    }
  });
  
  // 如果已存在主样式元素，则移除它
  if (themeStyleElement) {
    themeStyleElement.remove();
    themeStyleElement = null;
  }
  
  // 如果是正常模式，应用重置样式
  if (theme === 'normal') {
    document.documentElement.classList.add('theme-normal');
    
    // 创建并应用重置样式
    const resetStyle = document.createElement('style');
    resetStyle.id = 'theme-reset-normal';
    resetStyle.textContent = `
      html, body {
        filter: none !important;
        -webkit-filter: none !important;
        background-color: white !important;
        color: black !important;
      }
      
      * {
        filter: none !important;
        -webkit-filter: none !important;
      }
    `;
    
    // 添加重置样式
    document.head.appendChild(resetStyle);
    
    console.log("已应用正常模式");
    return;
  }
  
  // 创建新的样式元素
  themeStyleElement = document.createElement('style');
  themeStyleElement.id = 'theme-style-element';
  
  // 根据主题设置样式内容
  if (theme === 'dark') {
    document.documentElement.classList.add('theme-dark');
    applyDarkModeStyles(themeStyleElement);
  } else if (theme === 'eye-protect') {
    document.documentElement.classList.add('theme-eye-protect');
    applyEyeProtectModeStyles(themeStyleElement);
  }
  
  // 将样式元素添加到文档头部
  document.head.appendChild(themeStyleElement);
  
  console.log("主题样式已应用:", theme);
}

// 应用暗黑模式样式
function applyDarkModeStyles(styleElement) {
  // 使用CSS过滤器实现全局暗黑模式
  styleElement.textContent = `
    /* 全局暗黑模式过滤器 */
    html {
      filter: invert(90%) hue-rotate(180deg) !important;
      -webkit-filter: invert(90%) hue-rotate(180deg) !important;
      background: #fff !important;
    }
    
    /* 反转图片和视频等媒体元素，使其恢复原样 */
    img, video, canvas, picture, svg, embed[type="image/svg+xml"] {
      filter: invert(100%) hue-rotate(180deg) !important;
      -webkit-filter: invert(100%) hue-rotate(180deg) !important;
    }
    
    /* 处理背景图片 */
    *:not(img):not(video):not(canvas):not(picture):not(svg):not(embed)[style*="background-image"] {
      filter: invert(100%) hue-rotate(180deg) !important;
      -webkit-filter: invert(100%) hue-rotate(180deg) !important;
    }
  `;
}

// 应用护眼模式样式
function applyEyeProtectModeStyles(styleElement) {
  // 使用CSS过滤器实现全局护眼模式
  styleElement.textContent = `
    /* 全局护眼模式过滤器 */
    html {
      filter: sepia(20%) brightness(95%) !important;
      -webkit-filter: sepia(20%) brightness(95%) !important;
      background: #f8f5e6 !important;
    }
    
    /* 调整文本颜色，使其更易于阅读 */
    body, p, div, span, h1, h2, h3, h4, h5, h6 {
      color: #333 !important;
    }
    
    /* 调整链接颜色 */
    a:link, a:visited {
      color: #0c7b45 !important;
    }
    
    /* 减少图片亮度，使其更舒适 */
    img, video {
      filter: brightness(0.95) contrast(0.95) !important;
      -webkit-filter: brightness(0.95) contrast(0.95) !important;
    }
  `;
}

// 添加MutationObserver以处理动态加载的内容
function setupMutationObserver() {
  // 创建一个观察器实例
  const observer = new MutationObserver(function(mutations) {
    // 获取当前主题
    chrome.storage.sync.get('theme', function(data) {
      const currentTheme = data.theme;
      if (currentTheme && currentTheme !== 'normal') {
        // 对于新添加的元素，我们不需要完全重新应用主题
        // 因为我们使用的是全局CSS过滤器
      }
    });
  });
  
  // 配置观察选项
  const config = { 
    childList: true,  // 观察目标子节点的变化
    subtree: true     // 观察所有后代节点的变化
  };
  
  // 开始观察文档
  observer.observe(document.documentElement, config);
  
  console.log("DOM变化观察器已设置");
}

// 设置MutationObserver
setTimeout(setupMutationObserver, 1000);